About 2078 letters

About 10 minutes

#Python's class public members

Object attributes and methods are independent; for example, each cat has its own unique name. However, some things are common to all objects, such as all cats belonging to the species "domestic cat."

In Python, you can create class public members:

  • Public attributes are created by defining variables in the class
  • Public methods are created as functions without the self parameter
# Define class
class Cat:
    """
    Cat class
    """

    # Public attributes
    kingdom = 'Animalia'        # Kingdom: Animalia
    phylum = 'Chordata'         # Phylum: Chordata
    class_ = 'Mammalia'         # Class: Mammalia (underscore added because 'class' is a Python keyword)
    order = 'Carnivora'         # Order: Carnivora
    family = 'Felidae'          # Family: Felidae
    genus = 'Felis'             # Genus: Felis
    species = 'Felis catus'     # Species: Domestic cat

    # Public method without self parameter
    def taxonomy():
        print(f"{Cat.kingdom}-{Cat.phylum}")

    # Constructor
    def __init__(self):
        pass


# Create objects
tom = Cat()
garfield = Cat()

# Access public attributes via class and objects
print(Cat.kingdom)
print(tom.kingdom)
print(garfield.kingdom)

# Modify public attribute via class
Cat.kingdom = 'unknown'
print(Cat.kingdom)
print(tom.kingdom)
print(garfield.kingdom)

# Modify attribute via object (creates new instance attribute on tom)
tom.kingdom = 'rat'
print(Cat.kingdom)
print(tom.kingdom)
print(garfield.kingdom)

# Call public method via class
Cat.taxonomy()

# Cannot call method via object because self parameter is automatically passed
try:
    garfield.taxonomy()
except:
    print("Cannot call garfield.taxonomy()")

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

This demonstrates how class-level public members work, their shared nature among all instances, and how modifying them via the class or instance affects visibility.

Updated: 5/21/2025

Author: PlanC

Created: 5/15/2025